import {
	store
} from '@/uni_modules/uni-id-pages/common/store.js'

import dayjs from 'dayjs';

const username = store.userInfo.username

function getImageMIMEType(base64String) {
	// 正则表达式匹配 data:image/[type];base64, 开头部分
	const matches = base64String.match(/^data:image\/([a-zA-Z0-9]+);base64,/);
	if (matches) {
		return matches[1]; // 返回匹配的图片类型（例如 'jpeg', 'png' 等）
	} else {
		return null; // 如果不是有效的Base64字符串或没有匹配项
	}
}

function hasChinese(str) {
	// 更广泛的正则，匹配常见汉字以及扩展字符
	const chineseRegex = /[\u4e00-\u9fa5\u3400-\u4DBF\u20000-\u2A6DF]/;
	return chineseRegex.test(str);
}

export async function pt_upload(tempFiles) {
	let arrs = pt_forEach(tempFiles).map(async item => {
		return await uploadCloudFiles(item)
	})
	return await Promise.all(arrs)
}

function pt_forEach(tempFiles) {
	tempFiles.forEach((item, index) => {
		// 判断是否是base64字符串
		let MIMEType = getImageMIMEType(item.path)
		console.log('MIMEType', MIMEType);
		// 最后一个路径组件
		let lastPathComponent = item.name || item.path.substring(item.path.lastIndexOf('/') + 1)
		console.log('1=lastPathComponent', lastPathComponent);
		// 是否是正常的文件路径名
		if (!lastPathComponent.includes('.')) {
			lastPathComponent = `${Date.now()}.${MIMEType || 'png'}`
		}
		console.log('2=lastPathComponent', lastPathComponent);
		// 文件名
		if (!item.name) {
			item.name = lastPathComponent
		}
		// 后缀名
		if (!item.pathExtension) {
			item.pathExtension = lastPathComponent.substring(lastPathComponent.lastIndexOf('.') + 1)
		}
		// 类型
		if (!item.fileType) {
			item.fileType = 'image';
		}
		item.cloudPath = pt_cloudPath(item.name, index)
	});
	return tempFiles;
}

/// lastPathComponent文件路径中的最后一个路径组件
/// pathExtension文件路径中的扩展名
function pt_cloudPath(lastPathComponent, index) {
	let date = dayjs(Date.now()).format('YYYYMMDDHHmmssSSS')
	return username + "/" + date + '_' + index + '_' + lastPathComponent
}

function uploadCloudFiles(item) {
	return uniCloud.uploadFile({
		filePath: item.path,
		cloudPath: item.cloudPath,
		cloudPathAsRealPath: true
	})
}